/*
 * Copyright (c) 2013 UCE (Universidad Central del Ecuador), todos los derechos
 * reservados. Este software es confidencial y su informacion es propiedad de
 * UCE (Universidad Central del Ecuador). No debe revelar tal informacion y debe usarla
 * unicamente de acorde con los terminos de uso.
 */

package ec.linde.modulos.proyectos.servicio;

import java.util.List;
import java.util.Map;

import javax.ejb.Local;

import ec.linde.persistencia.entidades.proyectos.ContactoContratista;

/**
 * TODO: Agregar descripcion
 * 
 * @FechaCreacion: 29/09/2014
 * @author: Alex Carrillo
 * @FechaModificacion: 29/09/2014
 * @author: Alex Carrillo
 * @version: 1.0
 */
@Local
public interface ServicioContactoContratista {
	/**
	 * Guarda ProdContactoContratista
	 * 
	 * @param ContactoContratista
	 *            ProdContactoContratista a ser guardada
	 */
	void guardar(ContactoContratista contactoContratista);

	/**
	 * Elimina ProdContactoContratista
	 * 
	 * @param contactoContratista
	 *            ProdContactoContratista a ser eliminada
	 */
	void eliminar(ContactoContratista contactoContratista);

	/**
	 * Busca por IdContactoContratista
	 * 
	 * @param idContactoContratista
	 *            idContactoContratista a ser buscada
	 * @return ProdContactoContratista
	 */
	ContactoContratista buscarPorId(int idContactoContratista);

	/**
	 * Obtiene lista ProdContactoContratista
	 * 
	 * @param startIndex
	 *            Indice de inicio
	 * @param pageSize
	 *            Tamano de pagina
	 * @param sortField
	 *            Campo a ordenar la lista
	 * @param sortOrder
	 *            Indicador de Orden
	 * @param filters
	 *            Filtros de Lista
	 * @return Lista ProdContactoContratista
	 */
	List<ContactoContratista> obtenerListaPorPagina(int startIndex, int pageSize, String sortField, boolean sortOrder, Map<String, String> filters);

	/**
	 * Obtiene lista Combo ProdContactoContratista
	 * 
	 * @param sortField
	 *            Campo a ordenar la lista
	 * @param sortOrder
	 *            Indicador de Orden
	 * @param filters
	 *            Filtros de Lista
	 * @return
	 */
	public List<ContactoContratista> obtenerListaCombo(String sortField, boolean sortOrder, Map<String, String> filters);

	/**
	 * Recupera el numero de filas de la lista Zona
	 * 
	 * @param filters
	 *            Filtros de Lista
	 * @return Numero de registros de lista
	 */
	int contarPorCriterio(Map<String, String> filters);

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @param idContactoContratista
	 * @return
	 */
	ContactoContratista cargarDetalle(int idContactoContratista);

}
